The present invention concerns a method and a device of controlling the decoding received codewords in a linear block code as LDPC (Low Density Parity Check Code) decoder. The invention concerns codes that can be defined by a parity check matrix creating a direct relationship between the payload data and the redundancy necessary to protect this payload. LDPC codes and LDGM (Low Density Generator Matrix) codes are concerned, for example. Turbo codes issued from convolutional encodes are not concerned as the relationship that governs the redundancy depends on the state of the encoder and not directly on the data payload.
The process of decoding according to LDPC codes and the like is based on the decoding of a binary word, called a codeword, which length depends on the size of the matrix corresponding to the code. This codeword is the output of the demodulator and constitutes an estimate of the emitted word of information. This codeword is processed by a decoder to get a decoded word. The decoding is an iterative process. The number of iteration to achieve the proper decoding of the codeword depends on the number of errors, meaning inaccurate bit, in the estimated codeword. In presence of a good, without noise, transmission channel, we got a codeword exhibiting few or none errors, a single iteration of decoding could be enough to get the right decoded codeword. Some codeword comprising many errors could never be decoded whatever the number of iteration applied.
When decoding a stream of data over the transmission channel, in order to achieve real time decoding, it is important to get a decoding time for a codeword faster than the receiving time of this codeword. This is why pipelined architectures have been developed to implement series of decoding stage. A codeword enters the pipeline and could do any number of decoding stage to achieve the decoding of the word. This way, several codewords could be decoded in parallel. When a codeword decoding occurs in the middle of the pipeline, the last stages of pipeline could be unused.
Another technique is also used to improve the average decoding time. Given that the decoding time for a code word could vary depending on the number of errors to be corrected, buffering is used at the input of the decoder to spread over time the decoding of codewords. Assuming that codewords with a long decoding time and codewords with a fast decoding time are spread relatively evenly the use of an input buffer allows compensating the variations. Actual decoding shows that this is not always the case. It is also needed of course that the average decoding speed be faster than the receiving speed. When the buffer comes to overflow, either the last received word or the word being decoded is discarded.